home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / optivc32 / vemath.h < prev    next >
C/C++ Source or Header  |  1999-03-06  |  38KB  |  817 lines

  1. /*  VEmath.h
  2.  
  3.   vector management functions:
  4.   math functions performed on each individual element of an
  5.   array or vector of the data type "extended";   real numbers
  6.  
  7.   Copyright (c) 1996-1999 by Martin Sander
  8.   All Rights Reserved.
  9. */
  10.  
  11. #ifndef __VEMATH_H
  12. #define __VEMATH_H
  13.  
  14. #ifndef __VESTD_H 
  15. #include <VEstd.h>
  16. #endif
  17.  
  18. #ifdef __cplusplus
  19. extern "C" {
  20. #endif
  21.  
  22.  
  23. #ifdef __BORLANDC__   /* 80-bit IEEE numbers supported.
  24.                          The following  330 lines apply 
  25.                          only to Borland C++            */
  26.  
  27. /**************************  Rounding **********************************/
  28.  
  29. int  __vf   VE_round(  eVector  Y, eVector X, ui size );
  30. int  __vf   VE_roundtoBI( biVector Y, eVector X, ui size );
  31. int  __vf   VE_roundtoSI( siVector Y, eVector X, ui size );
  32. int  __vf   VE_roundtoI(  iVector  Y, eVector X, ui size );
  33. int  __vf   VE_roundtoLI( liVector Y, eVector X, ui size );
  34. int  __vf   VE_roundtoQI( qiVector Y, eVector X, ui size );
  35. int  __vf   VE_roundtoUB( ubVector Y, eVector X, ui size );
  36. int  __vf   VE_roundtoUS( usVector Y, eVector X, ui size );
  37. int  __vf   VE_roundtoU(  uVector  Y, eVector X, ui size );
  38. int  __vf   VE_roundtoUL( ulVector Y, eVector X, ui size );
  39.  
  40. int  __vf   VE_floor(  eVector  Y, eVector X, ui size );
  41. int  __vf   VE_floortoBI( biVector Y, eVector X, ui size );
  42. int  __vf   VE_floortoSI( siVector Y, eVector X, ui size );
  43. int  __vf   VE_floortoI(  iVector  Y, eVector X, ui size );
  44. int  __vf   VE_floortoLI( liVector Y, eVector X, ui size );
  45. int  __vf   VE_floortoQI( qiVector Y, eVector X, ui size );
  46. int  __vf   VE_floortoUB( ubVector Y, eVector X, ui size );
  47. int  __vf   VE_floortoUS( usVector Y, eVector X, ui size );
  48. int  __vf   VE_floortoU(  uVector  Y, eVector X, ui size );
  49. int  __vf   VE_floortoUL( ulVector Y, eVector X, ui size );
  50.  
  51. int  __vf   VE_ceil(  eVector  Y, eVector X, ui size );
  52. int  __vf   VE_ceiltoBI( biVector Y, eVector X, ui size );
  53. int  __vf   VE_ceiltoSI( siVector Y, eVector X, ui size );
  54. int  __vf   VE_ceiltoI(  iVector  Y, eVector X, ui size );
  55. int  __vf   VE_ceiltoLI( liVector Y, eVector X, ui size );
  56. int  __vf   VE_ceiltoQI( qiVector Y, eVector X, ui size );
  57. int  __vf   VE_ceiltoUB( ubVector Y, eVector X, ui size );
  58. int  __vf   VE_ceiltoUS( usVector Y, eVector X, ui size );
  59. int  __vf   VE_ceiltoU(  uVector  Y, eVector X, ui size );
  60. int  __vf   VE_ceiltoUL( ulVector Y, eVector X, ui size );
  61.  
  62. int  __vf   VE_chop(  eVector  Y, eVector X, ui size );
  63. int  __vf   VE_choptoBI( biVector Y, eVector X, ui size );
  64. int  __vf   VE_choptoSI( siVector Y, eVector X, ui size );
  65. int  __vf   VE_choptoI(  iVector  Y, eVector X, ui size );
  66. int  __vf   VE_choptoLI( liVector Y, eVector X, ui size );
  67. int  __vf   VE_choptoQI( qiVector Y, eVector X, ui size );
  68. int  __vf   VE_choptoUB( ubVector Y, eVector X, ui size );
  69. int  __vf   VE_choptoUS( usVector Y, eVector X, ui size );
  70. int  __vf   VE_choptoU(  uVector  Y, eVector X, ui size );
  71. int  __vf   VE_choptoUL( ulVector Y, eVector X, ui size );
  72.  
  73. #define     VE_trunc      VE_chop
  74. #define     VE_trunctoBI  VE_choptoBI
  75. #define     VE_trunctoSI  VE_choptoSI
  76. #define     VE_trunctoI   VE_choptoI
  77. #define     VE_trunctoLI  VE_choptoLI
  78. #define     VE_trunctoQI  VE_choptoQI
  79. #define     VE_trunctoUB  VE_choptoUB
  80. #define     VE_trunctoUS  VE_choptoUS
  81. #define     VE_trunctoU   VE_choptoU
  82. #define     VE_trunctoUL  VE_choptoUL
  83.  
  84. #if defined V_HUGE
  85.       #define   VE_roundtoUI   VE_roundtoUL
  86.       #define   VE_floortoUI   VE_floortoUL
  87.       #define   VE_ceiltoUI    VE_ceiltoUL
  88.       #define   VE_choptoUI    VE_choptoUL
  89.       #define   VE_trunctoUI   VE_trunctoUL
  90. #else
  91.       #define   VE_roundtoUI   VE_roundtoU
  92.       #define   VE_floortoUI   VE_floortoU
  93.       #define   VE_ceiltoUI    VE_ceiltoU
  94.       #define   VE_choptoUI    VE_choptoU
  95.       #define   VE_trunctoUI   VE_trunctoU
  96. #endif
  97.  
  98. /********************  Comparisons   ********************/
  99.  
  100. void __vf   VE_cmp0(    eVector Y, eVector X, ui size );
  101. ui   __vf   VE_cmp_eq0( eVector Y, eVector X, ui size );
  102. ui   __vf   VE_cmp_ne0( eVector Y, eVector X, ui size );
  103. ui   __vf   VE_cmp_le0( eVector Y, eVector X, ui size );
  104. ui   __vf   VE_cmp_lt0( eVector Y, eVector X, ui size );
  105. ui   __vf   VE_cmp_ge0( eVector Y, eVector X, ui size );
  106. ui   __vf   VE_cmp_gt0( eVector Y, eVector X, ui size );
  107.  
  108. ui   __vf   VE_cmp_eq0ind( uiVector Ind, eVector X, ui size );
  109. ui   __vf   VE_cmp_ne0ind( uiVector Ind, eVector X, ui size );
  110. ui   __vf   VE_cmp_le0ind( uiVector Ind, eVector X, ui size );
  111. ui   __vf   VE_cmp_lt0ind( uiVector Ind, eVector X, ui size );
  112. ui   __vf   VE_cmp_ge0ind( uiVector Ind, eVector X, ui size );
  113. ui   __vf   VE_cmp_gt0ind( uiVector Ind, eVector X, ui size );
  114.  
  115. void __vf   VE_cmpC(    eVector Y, eVector X, ui size, extended C );
  116. ui   __vf   VE_cmp_eqC( eVector Y, eVector X, ui size, extended C );
  117. ui   __vf   VE_cmp_neC( eVector Y, eVector X, ui size, extended C );
  118. ui   __vf   VE_cmp_leC( eVector Y, eVector X, ui size, extended C );
  119. ui   __vf   VE_cmp_ltC( eVector Y, eVector X, ui size, extended C );
  120. ui   __vf   VE_cmp_geC( eVector Y, eVector X, ui size, extended C );
  121. ui   __vf   VE_cmp_gtC( eVector Y, eVector X, ui size, extended C );
  122.  
  123. ui   __vf   VE_cmp_eqCind( uiVector Ind, eVector X, ui size, extended C );
  124. ui   __vf   VE_cmp_neCind( uiVector Ind, eVector X, ui size, extended C );
  125. ui   __vf   VE_cmp_leCind( uiVector Ind, eVector X, ui size, extended C );
  126. ui   __vf   VE_cmp_ltCind( uiVector Ind, eVector X, ui size, extended C );
  127. ui   __vf   VE_cmp_geCind( uiVector Ind, eVector X, ui size, extended C );
  128. ui   __vf   VE_cmp_gtCind( uiVector Ind, eVector X, ui size, extended C );
  129.  
  130. void __vf   VE_cmpV(    eVector Z, eVector X, eVector Y, ui size );
  131. ui   __vf   VE_cmp_eqV( eVector Z, eVector X, eVector Y, ui size );
  132. ui   __vf   VE_cmp_neV( eVector Z, eVector X, eVector Y, ui size );
  133. ui   __vf   VE_cmp_leV( eVector Z, eVector X, eVector Y, ui size );
  134. ui   __vf   VE_cmp_ltV( eVector Z, eVector X, eVector Y, ui size );
  135. ui   __vf   VE_cmp_geV( eVector Z, eVector X, eVector Y, ui size );
  136. ui   __vf   VE_cmp_gtV( eVector Z, eVector X, eVector Y, ui size );
  137.  
  138. ui   __vf   VE_cmp_eqVind( uiVector Ind, eVector X, eVector Y, ui size );
  139. ui   __vf   VE_cmp_neVind( uiVector Ind, eVector X, eVector Y, ui size );
  140. ui   __vf   VE_cmp_leVind( uiVector Ind, eVector X, eVector Y, ui size );
  141. ui   __vf   VE_cmp_ltVind( uiVector Ind, eVector X, eVector Y, ui size );
  142. ui   __vf   VE_cmp_geVind( uiVector Ind, eVector X, eVector Y, ui size );
  143. ui   __vf   VE_cmp_gtVind( uiVector Ind, eVector X, eVector Y, ui size );
  144.  
  145. ui   __vf   VE_cmp_inclrange0C( eVector Y, eVector X, ui size, extended C );
  146. ui   __vf   VE_cmp_exclrange0C( eVector Y, eVector X, ui size, extended C );
  147. ui   __vf   VE_cmp_inclrangeCC( eVector Y, eVector X, ui size, extended CLo, extended CHi );
  148. ui   __vf   VE_cmp_exclrangeCC( eVector Y, eVector X, ui size, extended CLo, extended CHi );
  149.  
  150. ui   __vf   VE_cmp_inclrange0Cind( uiVector Ind, eVector X, ui size, extended C );
  151. ui   __vf   VE_cmp_exclrange0Cind( uiVector Ind, eVector X, ui size, extended C );
  152. ui   __vf   VE_cmp_inclrangeCCind( uiVector Ind, eVector X, ui size, extended CLo, extended CHi );
  153. ui   __vf   VE_cmp_exclrangeCCind( uiVector Ind, eVector X, ui size, extended CLo, extended CHi );
  154.  
  155.  
  156. /********************  Standard Arithmetics   ***************************/
  157.  
  158. void  __vf  VE_equC( eVector X, ui size, extended C );
  159. void  __vf  VE_equV( eVector Y, eVector X, ui size );
  160. void  __vf  VEx_equV( eVector Y, eVector X, ui size, extended A, extended B );
  161.  
  162. void  __vf  VE_addC(  eVector Y, eVector X, ui size, extended C );
  163. void  __vf  VE_subC(  eVector Y, eVector X, ui size, extended C );
  164. void  __vf  VE_subrC( eVector Y, eVector X, ui size, extended C );
  165. void  __vf  VE_mulC(  eVector Y, eVector X, ui size, extended C );
  166. void  __vf  VE_divC(  eVector Y, eVector X, ui size, extended C );
  167. void  __vf  VE_divrC( eVector Y, eVector X, ui size, extended C );
  168. void  __vf  VEx_divrC( eVector Y, eVector X, ui size, extended A, extended B, extended C );
  169.  
  170. void  __vf  VE_addV(  eVector Z, eVec